home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / FixMFMDevice.lha / Source / FixFile.s < prev    next >
Encoding:
Text File  |  1996-09-21  |  698 b   |  43 lines

  1. FixFile        Move.l    LoadAddr(a5),a0
  2.         Move.l    LoadBufferSize(a5),d0
  3.  
  4.         Lsr.l    #2,d0
  5.         Subq.l    #1,d0        ; Correct for dbra
  6.  
  7. .SeekHdr    Cmp.l    #$000003E9,(a0)+
  8.         Beq.b    .GotHunkHeader
  9.         Dbra    d0,.SeekHdr
  10.  
  11. .WrongFile    Moveq.l    #-1,d0
  12.         Rts
  13.  
  14. .GotHunkHeader    Addq.l    #4,a0
  15.         Move.l    a0,a1
  16.         Cmp.l    #$70004e75,(a0)+
  17.         Bne.b    .WrongFile
  18.         Cmp.w    #$4afc,(a0)+
  19.         Bne.b    .WrongFile
  20.  
  21.         Move.l    20(a0),a0
  22.         Add.l    a1,a0
  23.         Move.l    4(a0),a0
  24.         Add.l    a1,a0
  25.         Move.l    (a0),a0
  26.         Add.l    a1,a0
  27.  
  28.         Cmp.l    #$48e72134,(a0)
  29.         Bne.b    .WrongFile
  30.         Move.b    #$31,2(a0)
  31.  
  32.         Moveq.l    #200,d0
  33. .Seek2ndMovem    Cmp.w    #$4cdf,(a0)+
  34.         Beq.b    .Maybe2nd
  35. .Nope        Dbra    d0,.Seek2ndMovem
  36.         Bra.b    .WrongFile
  37.  
  38. .Maybe2nd    Cmp.w    #$2c84,(a0)
  39.         Bne.b    .Nope
  40.  
  41.         Move.b    #$8c,1(a0)
  42.         Rts
  43.